/***********
 **	框架页js，下面的所有方法均为单例模式，一个页面只能实现一个实例！！！
 ********** */
var homePageName = "首页"
/**系统时间**/
FrameTime={
		setSysTime:function(id){
			var time=mini.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss");
			$("#"+id).html(time);
		},
		//初始化系统时间，定时更新
		initial:function(id){
			var that=this;
			that.setSysTime(id);
			setInterval(function(){
				that.setSysTime(id);
			},1000);
		}
}


/**菜单（最多支持3级菜单，一级菜单超过7个，则从第7个开始放入更多）**/
FrameMenu={
		isMenuHide:false,//当前菜单隐藏或显示状态，默认显示
		//初始化菜单
		initial:function(id,ip,imgFolder){
			//从后台获取菜单数据
			var that=this;
			$.ajax({
				url:ctx+"/sys/getMenu.do",
				success:function(data){
					if(data&&data.length>0){
						//创建菜单
						that.createMenu(id,data,imgFolder);
						//加载一级菜单hover事件
						that.menuLv1event();
						//加载一级菜单点击事件
						that.menuLv1click();
						//加载二级菜单hover事件
						that.menuLv2event();
						//加载二级菜单点击事件
						that.menuLv2click();
						//加载三级菜单点击事件
						that.menuLv3click();
						//加载用户更多操作hover事件
						that.userMoreEvent();
					}else{
						showAlert("对不起，</br>您的权限不足！","warn","警告",function(){
							location.href=ctx+'/loginOut.do?ip='+ip;
				    	});
					}
				}
			});
		},
		//生成菜单dom
		createMenu:function(id,data,imgFolder){
			var menu_html="";
			if(data){
				//一级菜单个数，如果小于等于7个则全部显示，如果大于7个，则显示前6个，剩下的放到更多里面
				var menu_level1_length=0;
				if(data.length>7){
					menu_level1_length=6;
				}else{
					menu_level1_length=data.length;
				}
				//生成一级菜单
				for(var i=0;i<menu_level1_length;i++){
					//一级菜单数据
					var menuItem=data[i];	
					var title=menuItem.text;
					var url=menuItem.info.url;
					//二级菜单数据
					var children=menuItem.children;
					//生成一级菜单dom元素
					menu_html+="<li class='frame-menu-Lv1' name='"+title+"' url='"+url+"'>";
					menu_html+=	"	<div class='frame-menu-Lv1-title' title='"+title+"'>";
					 //存在菜单图标时加载图标
					var iconCls=[""];
					if(menuItem.info.iconCls!=undefined&&menuItem.info.iconCls!=null){//旧版权限系统返回iconCls
						iconCls=menuItem.info.iconCls.split(",");
					}else if(menuItem.info.iconcls!=undefined&&menuItem.info.iconcls!=null){//新版权限系统返回iconcls
						iconCls=menuItem.info.iconcls.split(",");
					}
                	var menu_img_=iconCls[0];
                	var menu_hover_img_=iconCls[1];
                	if(menu_img_==""&&title==homePageName){
                		menu_img_="menu0.png";
                		menu_hover_img_="menu0-hover.png";
                	}
                	if(menu_hover_img_==""){
            			menu_hover_img_=menu_img_;
            		}
                	if(menu_img_!=""){
                		var imgSrc=imgFolder+"/"+menu_img_;
                		var imgHoverSrc=imgFolder+"/"+menu_hover_img_;
                		menu_html+="<img class='frame-menu-Lv1-icon' src="+imgSrc+" imgSrc="+imgSrc+" imgHoverSrc="+imgHoverSrc+" alt=''/>"
                	}
                	menu_html+=		title;
					menu_html+=	"	</div>";
					//生成一级菜单下的二级菜单dom元素
					if(children&&children.length>0){
						menu_html+=	"<ul style='display: none' class='frame-menu-Lv2'>";
						for(var j=0;j<children.length;j++){
							//二级菜单
							var menuItem2=children[j];
							var title2=menuItem2.text;
							var url2=menuItem2.info.url;
							menu_html+=	"<li class='frame-menu-Lv2-item' name='"+title2+"' url='"+url2+"' title='"+title2+"'>";
							menu_html+=	title2;
    							//生成三级菜单dom元素
    							var children3=menuItem2.children;
    							if(children3&&children3.length>0){
    								menu_html+=	"<div class='frame-menu-Lv3' style='display:none;top:"+j*35+"px;'><ul>";
    								for(var k=0;k<children3.length;k++){
    									//三级菜单
    									var menuItem3=children3[k];
    									var title3=menuItem3.text;
    									var url3=menuItem3.info.url;
    									menu_html+=	"<li class='frame-menu-Lv3-item' name='"+title3+"' url='"+url3+"' title='"+title3+"'>";
    									menu_html+=		title3;
    									menu_html+=	"</li>";
    								}
    								menu_html+=	"</ul></div>";
    							}
							menu_html+=	"</li>";
						}
						menu_html+=	"</ul>";
					}
					menu_html+="</li>";
				}
				
				//生成“更多”菜单
				if(data.length>7){
					//TODO
					var moreImgSrc=imgFolder+"/1-more.png";
					var moreImgHoverSrc=imgFolder+"/1-more1.png";
					//生成更多下的一级菜单dom元素
					menu_html+="<li class='frame-menu-Lv1 frame-menu-more' name='更多' url=''>";
					menu_html+=	"	<div class='frame-menu-Lv1-title'>";
					menu_html+=		"更多";
					menu_html+="		 <img class='frame-menu-Lv1-icon frame-menu-more-icon' src="+moreImgSrc+" imgSrc="+moreImgSrc+" imgHoverSrc="+moreImgHoverSrc+" alt=''/>"
					menu_html+=	"	</div>";
					
					//生成"更多"下的一级菜单
					menu_html+=	"<ul style='display: none' class='frame-menu-Lv2'>";
					for(var i=6;i<data.length;i++){
						//二级菜单
						var menuItem2=data[i];
						var title2=menuItem2.text;
						var url2=menuItem2.info.url;
						menu_html+=	"<li class='frame-menu-Lv2-item frame-menu-more-child' name='"+title2+"' url='"+url2+"' title='"+title2+"'>";
						menu_html+=	title2;
							//生成三级菜单dom元素
							var children3=menuItem2.children;
							if(children3&&children3.length>0){
								menu_html+=	"<div class='frame-menu-Lv3' style='display:none;top:"+(i-6)*35+"px;'><ul>";
								for(var k=0;k<children3.length;k++){
									//三级菜单
									var menuItem3=children3[k];
									var title3=menuItem3.text;
									var url3=menuItem3.info.url;
									menu_html+=	"<li class='frame-menu-Lv3-item' name='"+title3+"' url='"+url3+"' title='"+title3+"'>";
									menu_html+=		title3;
									menu_html+=	"</li>";
								}
								menu_html+=	"</ul></div>";
							}
						menu_html+=	"</li>";
					}
					menu_html+=	"</ul>";
					menu_html+=	"</li>";
				}
			}
			$("#"+id).html(menu_html);
		},
		//一级菜单绑定hover事件
		menuLv1event:function(){
			$(".frame-menu-Lv1").hover(function(){	
				//一级菜单hover图片
				$(this).find(".frame-menu-Lv1-icon").attr('src',$(this).find(".frame-menu-Lv1-icon").attr('imgHoverSrc'));
				//显示二级菜单
				var menuLv2 = $(this).find("ul");
				if(menuLv2!=null&&menuLv2.length!=0){
					menuLv2.show();
				}
			},function(){//hover离开时，隐藏菜单
				//一级菜单图片
				$(this).find(".frame-menu-Lv1-icon").attr('src',$(this).find(".frame-menu-Lv1-icon").attr('imgSrc'));
				//隐藏二级菜单
				var menuLv2 = $(this).find("ul");
				menuLv2.hide();
			});
		},
		//一级菜单点击事件（有url地址直接打开）
		menuLv1click:function(){
			$(".frame-menu-Lv1").click(function(){
				FrameTab.addTab($(this).attr("name"),"",$(this).attr("url"));
			});
		},
		//二级菜单绑定hover事件
		menuLv2event:function(){
			$(".frame-menu-Lv2-item").hover(function(){	
				//显示三级菜单
				var menuLv3 = $(this).find(".frame-menu-Lv3");
				if($(this).hasClass("frame-menu-more-child")){
					menuLv3.css("right",$(this).css("width"));
				}else{
					menuLv3.css("left",$(this).css("width"));
				}
				if(menuLv3!=null&&menuLv3.length!=0){
					menuLv3.show();
				}
			},function(){//hover离开时，隐藏菜单
				//隐藏三级菜单
				var menuLv3 = $(this).find(".frame-menu-Lv3");
				if(menuLv3!=null&&menuLv3.length!=0){
					menuLv3.hide();
				}
			});
		},
		//二级菜单点击事件
		menuLv2click:function(){
			$(".frame-menu-Lv2-item").click(function(){
				if($(this).attr("url")!=""){
					//加载tab页
					FrameTab.addTab($(this).attr("name"),$(this).parent().prev().attr("name"),$(this).attr("url"));
					//隐藏二级菜单
					$(this).parent().hide();
				}
			});
		},
		//三级菜单点击事件
		menuLv3click:function(){
			$(".frame-menu-Lv3-item").click(function(){
				//加载tab页
				FrameTab.addTab($(this).attr("name"),$(this).parent().prev().attr("name"),$(this).attr("url"));
			});
		},
		//用户更多hover事件-修改密码、退出登录
		userMoreEvent:function(){
			$(".frame-top-usermore").hover(function(){	
				$(".frame-top-usermore-detail").show();
			},function(){//hover离开时，隐藏菜单
				$(".frame-top-usermore-detail").hide();
			});
		},
		//退出登录
		loginOut:function(ip){
			showConfirm("您确定要退出登录吗？","","question",
	 				function(){
						location.href=ctx+'/loginOut.do?ip='+ip;
	       			}
	    	);
		},
		//修改密码
		modifyPassword:function(){
			mini.get("modifyPasswordWin").showAtPos("center","middle");
			var passwordDataForm=new mini.Form("passwordDataForm");
			passwordDataForm.reset();
		},
		//密码一致校验
		passwordConfirmValidation:function(e){
            if (e.isValid) {
                if (mini.get("newPasswordConfirm").getValue()!=mini.get("newPassword").getValue()) {
                    e.errorText = "输入密码不一致！";
                    e.isValid = false;
                }
            }
		},
		//密码输入字符校验
		isEnglishAndNumber:function (e) {
           var pattern =/^(?=.*\d)(?=.*[a-zA-Z])([a-zA-Z0-9]{6,18})$/;
            if (!pattern.test(e.value)){
                e.errorText = "密码为6~18位，必须同时包含英文和数字。";
                e.isValid = false;
            }
        },	
		//保存修改密码
		savePassword:function(){
			var passwordDataForm=new mini.Form("passwordDataForm");
			if(passwordDataForm.validate()){
				$.ajax({
					url:getProperties("authorServerUrl")+"/app/login/modifyPassword.do",
					data:passwordDataForm.getData(),
					success:function(data){
						if(data&&data.resultCode=="1"){
							showAlertAutoHide('密码修改成功！','success');
							mini.get("modifyPasswordWin").hide();
						}else{
							showAlertAutoHide('密码修改失败，'+data.result,'success');
						}
					},
					error:function(){
						showAlertAutoHide('密码修改失败,权限系统异常！','error');
					}
				});
    		}
		}
		
} 

/**tab页签**/
FrameTab={
	tabs:null,
	currentTab:null,
	//初始化
	initial:function(id){
		this.tabs=mini.get(id);
	},
	//tab右键菜单onBeforeOpen
	onBeforeOpen:function(e){
		FrameTab.currentTab=FrameTab.tabs.getTabByEvent(e.htmlEvent);
		if(!FrameTab.currentTab){
			e.cancel=true;
		}
	},
	//tab右键菜单-关闭其他
	closeAllBut:function(){
		var but=[FrameTab.currentTab];
		but.push(FrameTab.tabs.getTab(homePageName));
		FrameTab.tabs.removeAll(but);
	},
	//tab右键菜单-关闭所有
	closeAll:function(){
		var but=[];
		but.push(FrameTab.tabs.getTab(homePageName));
		FrameTab.tabs.removeAll(but);
	},
	//tab右键菜单-关闭当前
	closeTab:function(){
		if(FrameTab.currentTab.name==homePageName){
			showFailTip(homePageName+"无法关闭");
		}else{
			FrameTab.tabs.removeTab(FrameTab.currentTab);
		}
	},
	//增加tab页
	addTab:function(title,parentTitle,url){
		if(url==""||url==null) {
			return;
		}
		//title是tab显示名称，name是tab的唯一标识
		var name=title;
		if(title!=homePageName){//如果是首页，不加上级菜单名称。
			name=parentTitle+title;//如果不是首页，加上级菜单名称，防止不同菜单下子菜单名称重复（同级菜单下子菜单名称重复不考虑，说明菜单设置错误）。
		}
		var tab=this.tabs.getTab(name);
		if(tab==undefined){
			tab={
					title:title,
					name:name
			}
			//这里拼接了url，实际项目，应该从后台直接获得完整的url地址
			if(url.indexOf("http://")!=-1||url.indexOf("https://")!=-1){
				tab.url=url;
			}else if(url.indexOf("\$\{")!=-1&&url.indexOf("\}")!=-1){
				var key=url.substring(url.indexOf("\$\{")+2,url.indexOf("\}"));
				var val=getProperties(key);
				tab.url=url.replace("\$\{"+key+"\}",val);
			}else{
				tab.url=ctx+url;
			}
			if(name==homePageName){
				tab.showCloseButton=false;
			}else{
				tab.showCloseButton=true;
			}
			this.tabs.addTab(tab);
			this.tabs.activeTab(tab);
		}else{
			this.tabs.activeTab(tab);
			//不重载页面，防止被保存数据丢失?
			this.tabs.reloadTab(tab);
		}
	},
	//首页显示
	showHomePage:function(title,url){
		homePageName=title;//自定义首页名称
		this.addTab(title,"",url);
	},
	doLayout:function(){
		this.tabs.doLayout();
	}
	
}

function getProperties(key){
	var result;
	$.ajax({
		url:ctx+"/sys/getProperties.do",
		data:{
			key:key
		},
		async:false,
		success:function(data){
			result=data;
		}
	});
	return result;
}

/**全屏**/
FullScreen={
	open:function(){
		var docElm=document.documentElement;
		if(docElm.requestFullscreen){//W3C
			docElm.requestFullscreen();
		}else if(docElm.mozRequestFullScreen){//FireFox
			docElm.mozRequestFullScreen();
		}else if(docElm.webkitRequestFullScreen){//Chrome等
			docElm.webkitRequestFullScreen();
		}else if(docElm.msRequestFullscreen){//IE11
			docElm.msRequestFullscreen();
		}
		$("#fullScreen_open").hide();
		$("#fullScreen_closed").show();
	},
	closed:function(){
		if(document.exitFullscreen){
			document.exitFullscreen();
		}else if(document.mozCancelFullScreen){
			document.mozCancelFullScreen();
		}else if(document.webkitCancelFullScreen){
			document.webkitCancelFullScreen();
		}else if(document.msExitFullscreen){
			document.msExitFullscreen();
		}
		$("#fullScreen_open").show();
		$("#fullScreen_closed").hide();
	}
}